Technotes |
![]() Acrobat file (76K) |
![]() PDD file (329K) |
![]() AppleWorks file (54K) |
Inside Macintosh: GX Series Addenda |
Technote 1028 | FEBRUARY 1996 |
This Technote discusses addenda to the Inside Macintosh: QuickDraw GX Series.
This Note is intended for Macintosh QuickDraw GX developers who are using any version of QuickDraw GX up to and including 1.1.3.
|
Important for all Apple Printing and Graphics Developers:
The information in this Technote is still relevant up to and including Mac OS 7.6 with QuickDraw GX 1.1.5. Beginning with the release of Mac OS 8.0, however, Apple plans to deliver a system which incorporates QuickDraw GX graphics and typography only. QuickDraw GX printer drivers and GX printing extensions will not be supported in Mac OS 8.0 or in future Mac OS releases. Apple's goal is to simplify the user experience of printing by unifying the Macintosh graphic and printing architectures and standardizing on the classic Printing Manager. For details on Apple's official announcement, refer to </technotes/gxchange.html> |
Addendum to QuickDraw GX Environment and UtilitiesGX Gestalt VersionsTo determine the current version of QuickDraw GX in general, you call the Gestalt functions with the various gestalt selectors as outlined on p. 1-4 of Inside Macintosh: QuickDraw GX Environment and Utilities . The function returns a value indicating the version of QuickDraw GX printing/graphics/etc. currently installed.
This is how the QuickDraw GX gestalt 'qdgx' works: Table 1 shows you version gestalt values for QuickDraw GX. Table 1: Gestalt values for QuickDraw GX 'qdgx' Value GX Version 0x00010000 GX 1.0 0x00010001 GX 1.0.1 0x00010002 GX 1.0.2 0x00010100 GX 1.1 0x00010101 GX 1.1.1 0x00010102 GX 1.1.2 0x00010103 GX 1.1.3 Addendum to QuickDraw GX ObjectsGXGetShapeClipTypeYou can use the GXGetShapeClipType function to retrieve the clip shape type that a shape is being clipped to.
gxShapeType GXGetShapeClipType(gxShape source) source A reference to the shape you want to examine the clip property of. function result: A reference to the clip shape type.
DESCRIPTIONThis function is used to determine just the clip shape and eliminates three expensive steps that were necessary in QuickDraw GX 1.0 to get this information.The clip shape, which you specify using the clip parameter, may be a geometric shape, a bitmap shape, or a glyph shape. In the current implementation , it may not be a picture, text, or layout shape.
ERRORSout_of_memoryshape_is_nil Addenda to QuickDraw GX Printing Extensions and DriversPostScript Render OptionsgxNoIllegalEPSOperator and gxEPSTargetOption flag have been added to PostScript Render Options.
enum { gxNeedsHexOption = 0x00000001, gxNeedsCommentsOption = 0x00000002, gxBoundingBoxesOption = 0x00000004, gxPortablePostScriptOption = 0x00000008, gxUseLevel2ColorOption = 0x00000080, gxNoEPSIllegalOperators = 0x00000100, gxEPSTargetOption = gxNoEPSIllegalOperators + gxNeedsCommentsOption + gxBoundingBoxesOption }; typedef long gxPostScriptRenderOptions;
CONSTANT DESCRIPTIONSgxNoEPSIllegalOperators The driver should only emit operators that are allowed by Encapsulated PostScript specifications (Version 3.0). gxEPSTargetOption The driver should issue PostScript intended for EPS use.For descriptions of other constants, please see Inside Macintosh: QuickDraw GX Printing Extensions and Drivers , p. 4-27.
GXSetupPageImageData messageQuickDraw GX sends the GXSetupPageImageData message to indicate the final format, page shape, and imaging data for any given page. The message is sent once for every page, just prior to gxStartSendPage. You may wish to override this message in order to determine the final characteristics of the data which will be sent to the printer. Your override of the GXSetupPageImageData message must match the following declaration:
OSErr MySetupPageImageData(gxFormat theFormat, gxShape thePage, void *imageData); theFormat The format object for the page. thePage A reference to the page shape. imageData A pointer to imaging-specific data for initializing the printing device. function result: An error code. The value noErr indicates that the operation was successful. SPECIAL CONSIDERATIONSYou never send the GXSetupPageImageData message yourself.This message is not a device communications time message. Overrides should always forward this message.
RESULT CODESgxSegmentLoadFailedErr A required code segment could not be found, or there was not enough memory to load it. gxPrUserAbortErr The user has canceled printing. GXPostScriptEjectPendingPage messageQuickDraw GX sends the GXPostScriptEjectPendingPage message to check if there is a previously imaged page waiting to be ejected. If so, it will send the gxPostScriptEjectPage message for that page. Your override of the GXPostScriptEjectPendingPage message must match the following declaration:
OSErr MyPostScriptEjectPendingPage(Boolean *pageWasEjected) *pageWasEjected A pointer to a Boolean value. On return, the value is true if a page was ejected and false otherwise. function result: An error code. The value noErr indicates that the operation was successful. DESCRIPTIONYou can override this message to implement your own page handling. If your driver is going to display a manual feed alert, it is usually desirable to eject the previous page before asking the user to insert the next sheet of paper.
SPECIAL CONSIDERATIONSOverrides should always forward this message.
RESULT CODESgxSegmentLoadFailedErr A required code segment could not be found, or there was not enough memory to load it. gxPrUserAbortErr The user has canceled printing. GXHandleAltDestination messageQuickDraw GX sends the GXHandleAltDestination message when a destination other than "Print" is selected in the Print dialog. Your override of the GXHandleAltDestination message must match the following declaration:
OSErr MyGXHandleAltDestination (Boolean *userCancels) *userCancels A pointer to a Boolean value. On return, the value is true if the user cancels. function result: An error code. The value noErr indicates that the operation was successful. DESCRIPTIONThis message is sent when the destination pop-up in the Print dialog is something other than Print. For instance, currently, if a user selects File in the Print dialog, the Print button changes to Save. If you have a FAX driver and you want the Print dialog to be more user-friendly, you simply override this message to add your destination (e.g., TheFax) and to change the Save button to FAX for example.
SPECIAL CONSIDERATIONSThe override should check the gxFileFormatTag in the job collection. If the fileFormatName is an alternate destination, the driver or extension can either display its own dialog to get more information from the user or forward the message for the default 'Standard File' dialog.In order to change the destination, you must have an alternate destination ('dsta') resource declared. For more information on the 'dsta' resource, continue reading this document.
RESULT CODESgxSegmentLoadFailedErr A required code segment could not be found, or there was not enough memory to load it. gxPrUserAbortErr The user has canceled printing. The Alternate Destination ('dsta') ResourceThe alternate destination ('dsta') resource, of type gxDestinationAdditionType, allows a driver or application to specify a destination to be added to the destination pop-up menu in the Print dialog. Figure 1 shows the structure of the alternate destination resource.
Figure 1: The alternate destination resource
destination name The Pascal string name to show in the print dialog pop-up menu. button text The Pascal string name to show in the "OK" button when the user selects the destination name from above in the pop-up menu. The Custom Halftone Matrix ('dmat') ResourceThe custom halftone matrix ('dmat') resource, of type gxCustomMatrixType, allows a driver or application to specify a custom halftone matrix to be used rather than one of the several built-in halftone dot types provided by QuickDraw GX. Figure 2 shows the structure of a custom halftone matrix.
Figure 2: The custom halftone matrix resource
dpix The dots per inch in the x direction. This is a fixed point value. dpiy The dots per inch in the y direction. This is a fixed point value. width The width of the matrix. height The height of the matrix. brick offset The tile shift.Each entry in the samples array is for a matrix that outlines a specific tile shift. In order to make use of this resource, you must set the dither type of your 'rdip' resource to gxCustomDot. For more information on the 'rdip' resource, please see Inside Macintosh: QuickDraw GX Printing Extensions and Drivers , p. 6-66.
The Manual Feed Preferences ('mfpr') ResourceThe manual feed preferences ('mfpr') resource, of type gxManualFeedAlertPrefsType, allows the disabling of manual feed alerts on a desktop printer. This resource is optional.Figure 3 shows the structure of the manual feed preferences resource.
Figure 3: The manual feed preferences resource
alertFlags A collection of flag values that you can combine together to specify when manual feed alerts will be shown. The first word is for a driver's private use. Table 2: Flags used in the manual feed preferences resource Constant Value Explanation gxShowAlerts 0x01 Tells GX to show alerts for this desktop printerThe default settings if no resource is found is gxDefaultMFeedAlertSettings (=gxShowAlerts | gxAlertOnPaperChange).
SPECIAL CONSIDERATIONSThe 'mfpr' and 'outp' resources must be stored in the desktop printer by sending the GXWriteDTPData message. The desktop printer is the only place QuickDraw GX looks for these resources. A driver might store these resources when the desktop printer is created by overriding GXDefaultDesktopPrinter, forwarding the message, and then using Send_GXWriteDTPData to write the data.For more information on GXDefaultDesktopPrinter and GXWriteDTPData, see Inside Macintosh: QuickDraw GX Printing Extensions and Drivers . See the section "The Desktop Printer Output Characteristics ('outp') Resource" in this document for more information on 'outp'.
The Desktop Printer Output Characteristics ('outp' ) ResourceThe Desktop Printer Output Characteristics ('outp') Resource, of type gxDriverOutputType, allows printer drivers to indicate the characteristics of a desktop printer's output device. Currently, this resource only indicates whether or not the desktop printer represents an output device that can be configurable to different paper types.Figure 4 shows the structure of the desktop printer output characteristics resource.
Figure 4: The desktop printer output characteristics resource
driverFlags Available for driver-defined options. outputSettings A collection of flag values that you can combine together to specify whether a printer is a device with a paper feed. Currently predefined with gxCanConfigureTrays or 0. Table 3 Flags used in the manual feed preferences resource Constant Value Explanation gxCanConfigureTrays 0x01 Desktop printer represents a device with a paper feedIf no 'outp' resource is found in the desktop printers, QuickDraw GX assumes that the desktop printer is tray-configurable and will display the manual feed and paper mismatch alerts.
SPECIAL CONSIDERATIONSThe 'mfpr' and 'outp' resources must be stored in the desktop printer by sending the GXWriteDTPData message. The desktop printer is the only place QuickDraw GX looks for these resources. A driver might store these resources when the desktop printer is created by overriding GXDefaultDesktopPrinter, forwarding the message, and then using Send_GXWriteDTPData to write the data.For more information on GXDefaultDesktopPrinter and GXWriteDTPData, see Inside Macintosh: QuickDraw GX Printing Extensions and Drivers . See the section "The Manual Feed Preferences ('mfpr') Resource" in this document for more information on 'mfpr'.
Change Default DTP 'pfpr' Apple EventThis Apple Event is used to change the current default desktop printer. In order to use it, you need to send an Apple Event of type 'pfpr' (not very mnemonic) to the printing extension (creator of 'pxtn') with the data of the event being the name of the desktop printer that you want to make the default. A good sample of this can be found on the Developer CD series: Tool Chest Edition under Tool Chest: QuickDraw GX: SetDefaultDTP.
Addenda to QuickDraw GX TypographyGXGetLayoutJustificationGapYou can use the GXGetLayoutJustificationGap function to retrieve information about the amount of space QuickDraw GX tries to fill when justifying a line.
Fixed GXGetLayoutJustificationGap(gxShape layout) layout A reference to the layout shape whose information you need. function result: The signed difference between the specified width for the layout and the measured (unjustified) width. ERRORSshape_is_nil GXGetLayoutJustificationFactorsYou can use the GXGetLayoutJustificationFactors function to retrieve information about how much space is added for different kinds of characters (such as kashida, whitespace, and non-whitespace) when a line is justified.
void GXGetLayoutJustificationFactors(gxShape layout, Fixed constrainedFactors[], Fixed unconstrainedFactors[]) layout A reference to the layout shape whose information you need. constrainedFactors An array of Fixed values. On return, the array contains factors that represent the portions of available padding by priority (gxWhiteSpacePriority,..) that the layout ended up using in order to justify the line. unconstrainedFactors An array of Fixed values. On return, the array contains factors that represent the characters that were designated as being able to absorb unlimited gap. function result: The signed difference between the specified width for the layout and the measured (unjustified) width.
ERRORSshape_is_nil GXGetFontDefaultFeaturesYou can use the GXGetFontDefaultFeatures function to retrieve information about which layout features in a font happen by default.
long GXGetFontDefaultFeatures(gxFont fontID, gxRunFeature features[]) fontID A reference to the font whose information you need. features On return, an array of the features for this font. function result: A list of the feature type/selector pairs that correspond to those features the font designates as default behaviors. |
out_of_memory internal_font_error illegal_font_parameter